#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2025/11/1 14:27
# @Author  : summer
# @Email   : 610658552@qq.com
# @File    : ser_sms.py
# @Software: PyCharm
# @Desc    : 单个手机号发送的短信序列化器

from rest_framework import serializers


class SMSSendSerializer(serializers.Serializer):
    # 改为CharField：仅接收单个手机号字符串（不再支持列表）
    phone = serializers.CharField(
        required=True,
        error_messages={
            "required": "手机号为必填参数",
            "null": "手机号不能为空",
            "blank": "手机号不能为空白"
        }
    )

    # 发送数据：保持字典类型，可选（默认空字典）
    send_data = serializers.DictField(
        required=False,
        default={},
        error_messages={"invalid": "发送数据必须为字典类型"}
    )

    # 自定义验证：确保手机号是11位数字（单个手机号的核心校验）
    def validate_phone(self, value):
        # 去除可能的空格（避免前端误传空格）
        clean_phone = value.strip()
        # 校验：必须是数字且长度为11位
        if not clean_phone.isdigit() or len(clean_phone) != 11:
            raise serializers.ValidationError(f"手机号 {clean_phone} 格式错误，应为11位数字")
        # 返回清洗后的手机号（避免空格问题）
        return clean_phone
